package com.hospital.workstation.domain.vo;

import java.math.BigDecimal;
import java.util.Date;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.hospital.common.annotation.ExcelDictFormat;
import com.hospital.common.convert.ExcelDictConvert;
import lombok.Data;

import java.util.Date;
import java.util.List;


/**
 * A表 监测信息视图对象 electronic_monitor_one_info
 *
 * @author whb
 * @date 2024-05-07
 */
@Data
@ExcelIgnoreUnannotated
public class ElectronicMonitorOneInfoVo {

    private static final long serialVersionUID = 1L;

    /**
     * 主键id
     */
    @ExcelProperty(value = "主键id")
    private Long id;

    /**
     * 管理信息的主键id
     */
    private Long manageId;

    /**
     * 患者流水号
     */
    private Integer medicalRecordNo;

    /**
     * 监测表流水号
     */
    @ExcelProperty(value = "监测表流水号")
    private String monitorRecordNo;

    /**
     * 医院编号
     */
    @ExcelProperty(value = "医院编号")
    private String hospitalNo;

    /**
     * 监测医院
     */
    @ExcelProperty(value = "监测医院")
    private String hospitalName;

    /**
     * 分中心
     */
    @ExcelProperty(value = "分中心")
    private String branchCenter;

    /**
     * 科室/病区ID
     */
    @ExcelProperty(value = "科室/病区ID")
    private Long deptId;

    /**
     * 床号
     */
    @ExcelProperty(value = "床号")
    private String bedNo;

    /**
     * 患者姓名
     */
    @ExcelProperty(value = "患者姓名")
    private String patientName;

    /**
     * 患者姓名缩写
     */
    @ExcelProperty(value = "患者姓名缩写")
    private String patientNameAcronym;

    /**
     * 住院号
     */
    @ExcelProperty(value = "住院号")
    private String patientNo;

    /**
     * 入组日期
     */
    @ExcelProperty(value = "入组日期")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date inputFormDate;

    /**
     * 天气
     */
    @ExcelProperty(value = "天气")
    private String weather;

    /**
     * 温度
     */
    @ExcelProperty(value = "温度")
    private String temperature;

    /**
     * 患者性别（1男 2女 3未知）
     */
    @ExcelProperty(value = "患者性别", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "1=男,2=女,3=未知")
    private String patientSex;

    /**
     * 出生日期
     */
    @ExcelProperty(value = "出生日期")
    private Date birthdate;

    /**
     * 联系电话
     */
    @ExcelProperty(value = "联系电话")
    private String phoneNo;

    /**
     * 身高（cm）
     */
    @ExcelProperty(value = "身高", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "c=m")
    private BigDecimal patientHeight;

    /**
     * 体重（kg）
     */
    @ExcelProperty(value = "体重", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "k=g")
    private BigDecimal patientWeight;

    /**
     * 民族
     */
    @ExcelProperty(value = "民族")
    private String nation;

    /**
     * 有无过敏史（0无 1有）
     */
    @ExcelProperty(value = "有无过敏史", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "0=无,1=有")
    private String isHaveAllergy;

    /**
     * 过敏原（1食物 2药物 3不明原因过敏 4其它）
     */
    @ExcelProperty(value = "过敏原", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "1=食物,2=药物,3=不明原因过敏,4=其它")
    private String allergySource;

    /**
     * 过敏原食物
     */
    @ExcelProperty(value = "过敏原食物")
    private String allergyFood;

    /**
     * 过敏原药物
     */
    @ExcelProperty(value = "过敏原药物")
    private String allergyDrug;

    /**
     * 过敏原不明原因
     */
    @ExcelProperty(value = "过敏原不明原因")
    private String allergyUnknown;

    /**
     * 过敏原其它
     */
    @ExcelProperty(value = "过敏原其它")
    private String allergyOther;

    /**
     * 过敏表现（1过敏性休克 2喉水肿 3支气管痉挛 4皮疹 5瘙痒 6腹痛 7恶心 8呕吐 9腹泻 10便秘 11其它）
     */
    @ExcelProperty(value = "过敏表现", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "1=过敏性休克,2=喉水肿,3=支气管痉挛,4=皮疹,5=瘙痒,6=腹痛,7=恶心,8=呕吐,9=腹泻,1=0便秘,1=1其它")
    private String allergyShow;

    /**
     * 过敏表现其它
     */
    @ExcelProperty(value = "过敏表现其它")
    private String allergyShowOther;

    /**
     * 有无过敏性疾病史（0无 1有）
     */
    @ExcelProperty(value = "有无过敏性疾病史", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "0=无,1=有")
    private String isHaveIllness;

    /**
     * 过敏性疾病表现（1过敏性鼻炎 2过敏性哮喘 3湿疹 4不明原因皮肤风团 5其它）
     */
    @ExcelProperty(value = "过敏性疾病表现", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "1=过敏性鼻炎,2=过敏性哮喘,3=湿疹,4=不明原因皮肤风团,5=其它")
    private String illnessShow;

    /**
     * 过敏性疾病表现其它
     */
    @ExcelProperty(value = "过敏性疾病表现其它")
    private String illnessShowOther;

    /**
     * 有无家族过敏史（0无 1有）
     */
    @ExcelProperty(value = "有无家族过敏史", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "0=无,1=有")
    private String isHaveFamily;

    /**
     * 与本人关系父母（0无 1有）
     */
    @ExcelProperty(value = "与本人关系父母", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "0=无,1=有")
    private String relationParent;

    /**
     * 与本人关系兄弟姐妹（0无 1有）
     */
    @ExcelProperty(value = "与本人关系兄弟姐妹", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "0=无,1=有")
    private String relationBrotherSister;

    /**
     * 是否有关系药物（0无 1有）
     */
    @ExcelProperty(value = "是否有关系药物", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "0=无,1=有")
    private String relationPills;

    /**
     * 关系的药物名称
     */
    @ExcelProperty(value = "关系的药物名称")
    private String relationPillsHave;

    /**
     * 是否有关系其它过敏史（0无 1有）
     */
    @ExcelProperty(value = "是否有关系其它过敏史", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "0=无,1=有")
    private String relationAllergyOther;

    /**
     * 关系的其它过敏史名称
     */
    @ExcelProperty(value = "关系的其它过敏史名称")
    private String relationAllergyOtherHave;

    /**
     * 西医诊断（1脑梗死 2冠心病 3短暂性脑缺血发作 4椎基底动脉供血不足 5高血压 6大脑动脉粥样硬化症 7偏头疼 8神经性头疼 9颈椎病 10其它）
     */
    @ExcelProperty(value = "西医诊断", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "1=脑梗死,2=冠心病,3=短暂性脑缺血发作,4=椎基底动脉供血不足,5=高血压,6=大脑动脉粥样硬化症,7=偏头疼,8=神经性头疼,9=颈椎病,1=0其它")
    private String westernMedicineDiagnose;

    /**
     * 西医诊断其它，多个用逗号隔开
     */
    @ExcelProperty(value = "西医诊断其它，多个用逗号隔开")
    private String westernMedicineDiagnoseOther;

    /**
     * 是否有中医诊断（0无 1有）
     */
    @ExcelProperty(value = "是否有中医诊断", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "0=无,1=有")
    private String isHaveTcmDiagnose;

    /**
     * 中医诊断（1中风 2胸痹 3其它）
     */
    @ExcelProperty(value = "中医诊断", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "1=中风,2=胸痹,3=其它")
    private String tcmDiagnose;

    /**
     * 中医诊断其它
     */
    @ExcelProperty(value = "中医诊断其它")
    private String tcmDiagnoseOther;

    /**
     * 是否有辩证（0无 1有）
     */
    @ExcelProperty(value = "是否有辩证", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "0=无,1=有")
    private String isHavaDialectical;

    /**
     * 辩证详情
     */
    @ExcelProperty(value = "辩证详情")
    private String dialecticalDetail;

    /**
     * 入院诊断西医，多个用逗号隔开
     */
    @ExcelProperty(value = "入院诊断西医，多个用逗号隔开")
    private String westernAdmittingDiagnose;

    /**
     * 入院诊断西医其它
     */
    @ExcelProperty(value = "入院诊断西医其它")
    private String westernAdmittingDiagnoseOther;

    /**
     * 是否有入院诊断中医（0无 1有）
     */
    @ExcelProperty(value = "是否有入院诊断中医", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "0=无,1=有")
    private String isHaveTcmAdmittingDiagnose;

    /**
     * 入院诊断中医，多个用逗号隔开
     */
    @ExcelProperty(value = "入院诊断中医，多个用逗号隔开")
    private String tcmAdmittingDiagnose;

    /**
     * 是否有入院辩证（0无 1有）
     */
    @ExcelProperty(value = "是否有入院辩证", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "0=无,1=有")
    private String isHaveAdmittingDialectical;

    /**
     * 入院诊断辩证
     */
    @ExcelProperty(value = "入院诊断辩证")
    private String admittingDialecticalDetail;

    /**
     * 本次治疗前是否使用过舒血宁注射液（0否 1是 2不详）
     */
    @ExcelProperty(value = "本次治疗前是否使用过舒血宁注射液", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "0=否,1=是,2=不详")
    private String isHavaUse;

    /**
     * 用药天数
     */
    @ExcelProperty(value = "用药天数")
    private Integer useDays;

    /**
     * 首次用药时间
     */
    @ExcelProperty(value = "首次用药时间")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date firstUseDate;

    /**
     * 末次用药时间
     */
    @ExcelProperty(value = "末次用药时间")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date lastUseDate;

    /**
     * 溶媒种类
     */
    @ExcelProperty(value = "溶媒种类")
    private String menstruumType;

    /**
     * 给药途径
     */
    @ExcelProperty(value = "给药途径")
    private String givePillsPathway;

    /**
     * 给药期间是否发生不良反应/事件（0无 1有）
     */
    @ExcelProperty(value = "给药期间是否发生不良反应/事件", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "0=无,1=有")
    private String isHaveBad;

    /**
     * 给药途径（见续二）
     */
    @ExcelProperty(value = "给药途径（见续二）")
    private String givePillsPathway2;

    /**
     * 用法（见续二）
     */
    @ExcelProperty(value = "用法（见续二）")
    private String pillsUsage;

    /**
     * 监测员签名
     */
    @ExcelProperty(value = "监测员签名")
    private String inspectorSign;

    /**
     * 监测日期
     */
    @ExcelProperty(value = "监测日期")
    private Date inspectorDate;

    /**
     * 质控员签名
     */
    @ExcelProperty(value = "质控员签名")
    private String qualityControllerSign;

    /**
     * 质控日期
     */
    @ExcelProperty(value = "质控日期")
    private Date qualityControllerDate;

    /**
     * 提交状态（0暂存 1提交）
     */
    private String submitStatus;

    /**
     * 审核状态（0驳回 1通过）
     */
    private String auditStatus;

    /**
     * 驳回原因
     */
    private String rejectReason;

    /**
     * 导出状态（0未导出 1已导出）
     */
    private String exportStatus;

    /**
     * 续一表视图集合
     */
    private List<ElectronicExtendOneInfoVo> electronicExtendOneInfoVoList;

    /**
     * 续二表视图集合
     */
    private List<ElectronicExtendTwoInfoVo> electronicExtendTwoInfoVoList;
}
